package org.chen.service;

import org.chen.common.model.travel.StoreTravelOrder;

import java.math.BigDecimal;

public interface AsyncTaskService {
    void processPaymentAsync(StoreTravelOrder order);

    void processRefund(StoreTravelOrder existStoreOrder);

    void processSuccessfulPayment(StoreTravelOrder existingOrder);

    void agreeRefund(StoreTravelOrder existStoreOrder);

    void autoRefundForNonExistentOrder(String payPalOrderId, BigDecimal amount);

    void autoRefundForCancelledOrder(StoreTravelOrder order,
                                     String payPalOrderId,
                                     BigDecimal amount);

    void autoRefundForAmountMismatch(StoreTravelOrder order,
                                     String payPalOrderId,
                                     BigDecimal amount);

    void autoRefundForDuplicatePayment(StoreTravelOrder order,
                                       String payPalOrderId,
                                       BigDecimal amount);

    void autoRefundForRecoveryFailed(StoreTravelOrder order,
                                     String payPalOrderId,
                                     BigDecimal amount);

    void autoRefundForRefundedOrder(StoreTravelOrder order,
                                    String payPalOrderId,
                                    BigDecimal amount);
}
